/******************************************************
 * Cours: LOG121
 * Session: A2012
 * Groupe: 01 Projet: Laboratoire #2
 * Étudiant(e)s: Guillaume Boulay
 *               Raphael Faucher
 * Professeur et chargé de labo : Patrice Boucher
 * Nom du fichier: Dice.java
 * Date crée: 2012-11-12 
 * Date dern. modif. 2012-11-19
 ******************************************************* 
 * Historique des modifications
 ******************************************************* 
 * 2012-11-12 Version initiale (Raphael Faucher) 
 * 2012-11-17 Ajout de la fonction setNbFace(int) (Raphael Faucher) 
 * 2012-11-19 Modification de l'interface et 
 *            de la documentation (Guillaume Boulay)
 *******************************************************/

public class Dice implements Comparable<Dice>
{
    private int faces = 0;
    private int value = 0;

    /**
     * Définie le nombre de faces d'un dé pour en géréré des données
     * aléatoirement compris entre 1 et le nombre de faces.
     * 
     * @param faces doit être >= 2.
     */
    public Dice(int faces)
    {
        assert faces >= 2;

        this.faces = faces;
    }

    /**
     * Change le nombre de faces d'un dé.
     * 
     * @param faces doit être >= 2.
     */
    public void setFaces(int faces)
    {
        assert faces >= 2;

        this.faces = faces;
    }

    /**
     * Retourne un nombre aléatoire entre 1 et le nombre de faces que le dé
     * contient.
     * 
     * @return le nombre aléatoire.
     */
    public int roll()
    {
        this.value = (int) (Math.random() * (this.faces )) + 1;
        return this.value;
    }

    /**
     * Retourne la valeur du dernier lancé de dé.
     * 
     * @return la valeur du dernier lancé de dé.
     */
    public int getValue()
    {
        return this.value;
    }

    /**
     * Retourne le nombre de faces que le dé conteint.
     * 
     * @return le nombre de faces.
     */
    public int getFaces()
    {
        return this.faces;
    }

    /**
     * Implémentation de la méthode compareTo().
     */
    public int compareTo(Dice aDice)
    {
        if (aDice.value == this.value)
            return 0;
        else if (aDice.value > this.value)
            return -1;
        else
            return 1;
    }
}
